/*第一题 1*/
// 读取数据
val lines = sc.textFile("file:///opt/moudle/chapter5-data1.txt")  
  
// 将每一行数据映射为其按逗号分隔后的第一个字段  
val par = lines.map(row => row.split(",")(0))  
  
// 去除重复元素  
val distinct_par = par.distinct()
  
// 计算元素总数  
distinct_par.count

/*第一题 2*/
// 读取数据
val lines = sc.textFile("file:///opt/moudle/chapter5-data1.txt")  
  
// 将每一行数据映射为其按逗号分隔后的第二个字段  
val par = lines.map(row => row.split(",")(1))  
  
// 去除重复元素  
val distinct_par = par.distinct()  
  
// 计算去重后的元素总数  
distinct_par.count

/*第一题 3*/
// 读取数据
val lines = sc.textFile("file:///opt/moudle/chapter5-data1.txt")  

// 筛选出第一个字段为"Tom"的行号和数 
val pare = lines.filter(row => row.split(",")(0) == "Tom")  
  
// 打印得到的结果
pare.foreach(println)  
  
// 将筛选出的行映射为(名字, 年龄)键值对，并统计每个名字的总年龄和出现的次数  
pare.map(row => (row.split(",")(0), row.split(",")(2).toInt))  
  .mapValues(x => (x, 1))  
  .reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2))  
  .mapValues(x => (x._1 / x._2))  
  .collect()

/*第一题 4*/
// 读取文件中的数据到RDD  
val lines = sc.textFile("file:///opt/moudle/chapter5-data1.txt")  
  
// 将每一行数据映射为(第一个字段, 第二个字段)键值对  
val pare = lines.map(row => (row.split(",")(0), row.split(",")(1)))  
  
// 统计每个键对应的值的数量（这里值被保留，并附上一个计数1）  
// 但最终打印的是值的数量，因为键被替换为空格了  
pare.mapValues(x => (x, 1))  
  .reduceByKey((x, y) => (" ", x._2 + y._2))  
  .mapValues(x => x._2)  
  .foreach(println)

/*第一题 5*/
// 读取文件中的数据到RDD  
val lines = sc.textFile("file:///opt/moudle/chapter5-data1.txt")  
  
// 筛选出第二个字段为"DataBase"的行，并计算这些行的数量  
val pare = lines.filter(row => row.split(",")(1) == "DataBase")  
pare.count

/*第一题 6*/
// 读取文件中的数据到RDD  
val lines = sc.textFile("file:///opt/moudle/chapter5-data1.txt")  
  
// 将每一行数据映射为(第二个字段, 年龄)键值对  
val pare = lines.map(row => (row.split(",")(1), row.split(",")(2).toInt))  
  
// 统计每个键对应的值的总和以及出现次数，并计算平均值  
pare.mapValues(x => (x, 1))  
  .reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2))  
  .mapValues(x => (x._1 / x._2))  
  .collect()

/*第一题 7*/
// 读取文件数据
val lines = sc.textFile("file:///opt/moudle/chapter5-data1.txt")  
 //
// 筛选"DataBase"行，并映射为(第二个字段, 1)键值对完全值
val pare = lines.filter(row => row.split(",")(1) == "DataBase").map(row => (row.split(",")(1), 1))  
 //
// 创建一个累加器来统计值（这里是1）的总数
val accum = sc.longAccumulator("My Accumulator")  
